from enum import Enum

class ConfigurationOptions(Enum):
    """
    Enum defining various configuration options for matchers.
    """

    # Property defining the minimum similarity threshold in bottom-up matchers
    # to match two inner nodes. It has a double value.
    # @see com.github.gumtreediff.matchers.heuristic.gt.GreedyBottomUpMatcher
    bu_minsim = "bu_minsim"

    # Property defining the minimum size threshold in bottom-up
    # in order to have the last chance match applied. It has an integer value.
    # @see com.github.gumtreediff.matchers.heuristic.gt.GreedyBottomUpMatcher
    # @see com.github.gumtreediff.matchers.heuristic.gt.HybridBottomUpMatcher
    bu_minsize = "bu_minsize"

    # Property defining the minimum priority threshold in subtree matchers
    # in order to be considered for matching. Priority relates to the
    # priority calculator (such as size or height). It has an integer value.
    # @see com.github.gumtreediff.matchers.heuristic.gt.AbstractSubtreeMatcher
    st_minprio = "st_minprio"

    # Property defining the priority calculator in subtree matchers.
    # It has a string value that can be either size or height.
    # @see com.github.gumtreediff.matchers.heuristic.gt.AbstractSubtreeMatcher
    st_priocalc = "st_priocalc"

    # Property defining the minimum label similarity threshold in change distiller
    # matcher to have a match between two nodes. It has a double value.
    # @see com.github.gumtreediff.matchers.heuristic.cd.ChangeDistillerLeavesMatcher
    cd_labsim = "cd_labsim"

    # Property defining the maximum number of leaves threshold in change distiller
    # bottom-up matcher to change from the structsim2 threshold to the strucsim1 threshold
    # in order to match two nodes. It has an integer value.
    # @see com.github.gumtreediff.matchers.heuristic.cd.ChangeDistillerBottomUpMatcher
    cd_maxleaves = "cd_maxleaves"

    # Property defining the minimum similarity threshold in change distiller
    # for nodes having more than cd_maxleaves leaves
    # in order to match two nodes. It has a double value.
    # @see com.github.gumtreediff.matchers.heuristic.cd.ChangeDistillerBottomUpMatcher
    cd_structsim1 = "cd_structsim1"

    # Property defining the minimum similarity threshold in change distiller
    # for nodes having less than (or equals to) cd_maxleaves leaves
    # in order to match two nodes. It has a double value.
    # @see com.github.gumtreediff.matchers.heuristic.cd.ChangeDistillerBottomUpMatcher
    cd_structsim2 = "cd_structsim2"

    # Property defining the minimum similarity threshold in XYDiff bottom-up matcher
    # to match two nodes.
    # @see com.github.gumtreediff.matchers.heuristic.XyBottomUpMatcher
    xy_minsim = "xy_minsim"
